`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2024/03/15 07:57:59
// Design Name: 
// Module Name: arp_ctrl
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////

// 控制接收请求后应答主机
module arp_ctrl(
    input  clk          ,
    input  rst_n        ,
    input  key_req      ,
    input  rx_type      , // 1 指收到的为请求信号 ， 0 指收到的为应答信号
    input  rx_done      , // 帮助rx_start只发送一次arp应答信号
    output reg tx_start ,
    output reg tx_type        // 1 为发请求，0 为发应答
    
    );
// 测试用
reg key_req_t;
wire key_req_pos;
always @(posedge clk or negedge rst_n) begin
    if(~rst_n)begin
        key_req_t <= 1'd0;
    end
    else
        key_req_t <= key_req;
end
assign key_req_pos = ~key_req_t & key_req;

// 如果收到请求就回应
always @(posedge clk or negedge rst_n) begin
    if(~rst_n)begin
        tx_start <= 1'd0;
        tx_type <= 1'd0;
    end
    else begin
        if(rx_type && rx_done)begin// 进行应答 -- 1 指收到的为请求信号
            tx_start <= 1'd1;
            tx_type  <= 1'd0;
        end
        else if(key_req_pos)begin
            tx_start <= 1'd1; 
            tx_type  <= 1'd1;
        end
        else
            tx_start <= 1'd0;
    end
end

endmodule
